package priv.pront.code.national.acwing.dp.linear.trangle;

import java.util.Arrays;
import java.util.Scanner;

public class A1018_最低通行费正解 {

    public static void main(String []args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[][] arr=new int[n+1][n+1];
        int[][] f=new int[n+1][n+1];
        for(int i=0;i<=n;i++) Arrays.fill(f[i],0x3f3f3f3f);//因为求最小所以初始化一下
        f[1][0]=0;//这个是初始化f[1][1]用的，因为不想在for里面写判断，所以在这用他初始化吧
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++){
                arr[i][j]=sc.nextInt();
                f[i][j]=Math.min(f[i-1][j],f[i][j-1])+arr[i][j];
            }
        System.out.println(f[n][n]);
    }
}
